--Grupo: 
--	NUNCA_TAXI
--Integrantes:
--	Dorati Hermida, Ivan
--	Pereyra, Yohanna
--	Torrente, Nicolas
--	Schachner, Pablo
--Cursada:
--	1er Cuatrimestre, 2012
--Curso:
--	K3151-K3051

--------------------------------------------------
--				CREAR ESQUEMAS					--
--------------------------------------------------
CREATE SCHEMA NUNCA_TAXI
GO

--------------------------------------------------
--				CREAR TABLAS					--
--------------------------------------------------
CREATE PROCEDURE NUNCA_TAXI.CrearTablasNuncaTaxi
AS 
BEGIN
	--				MarcasReloj
	CREATE TABLE NUNCA_TAXI.MarcasReloj(
		Id_MarcaReloj numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Ma_NombreReloj varchar(255)UNIQUE NOT NULL)

	--				Relojes
	CREATE TABLE NUNCA_TAXI.Relojes(
		Id_Reloj numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Id_MarcaReloj numeric (18, 0) References NUNCA_TAXI.MarcasReloj(Id_MarcaReloj) NOT NULL,
		Re_Modelo varchar(255)UNIQUE NOT NULL,
		Re_Habilitado bit NOT NULL CONSTRAINT [DF_Relojes_R_Habilitado]  DEFAULT ((1)),
		Re_Fecha_Ver datetime NOT NULL,
		Re_NoSerie varchar(18) NULL)

	--				Clientes
	CREATE TABLE NUNCA_TAXI.Clientes(
		Id_Cliente numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Cl_Nombre varchar(255) NOT NULL,
		Cl_Apellido varchar(255) NOT NULL,
		Cl_Dni numeric(18, 0)UNIQUE NOT NULL,
		Cl_Telefono numeric(18, 0)UNIQUE NOT NULL,
		Cl_Direccion varchar(255)UNIQUE NOT NULL,
		Cl_Mail varchar(255) NULL,
		Cl_Fecha_Nac datetime NOT NULL,
		Cl_Habilitado bit NOT NULL CONSTRAINT [DF_Clientes_Cl_Habilitacion]  DEFAULT ((1)))

	--				Turnos
	CREATE TABLE NUNCA_TAXI.Turnos(
		Id_Turno numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Tu_Hora_Ini numeric(18, 0) NOT NULL,
		Tu_Hora_Fin numeric(18, 0) NOT NULL,
		Tu_Descripcion varchar(255)UNIQUE NOT NULL,
		Tu_Valor_Ficha numeric(18, 2) NOT NULL,
		Tu_Valor_Bandera numeric(18, 2) NOT NULL,
		Tu_Habilitado bit NOT NULL CONSTRAINT [DF_Turnos_Tu_Habilitado]  DEFAULT ((1)))

	--				Choferes
	CREATE TABLE NUNCA_TAXI.Choferes(
		Id_Chofer numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Ch_Nombre varchar(255) NOT NULL,
		Ch_Apellido varchar(255) NOT NULL,
		Ch_Dni numeric(18, 0)UNIQUE NOT NULL,
		Ch_Direccion varchar(255)UNIQUE NOT NULL,
		Ch_Telefono numeric(18, 0)UNIQUE NOT NULL,
		Ch_Mail varchar(255) NULL,
		Ch_Fecha_Nac datetime NOT NULL,
		Ch_Habilitado bit NOT NULL CONSTRAINT [DF_Choferes_Ch_Habilitado]  DEFAULT ((1)))

	--				MarcasTaxi
	CREATE TABLE NUNCA_TAXI.MarcasTaxi(
		Id_MarcaTaxi numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Ma_NombreTaxi varchar(255)UNIQUE NOT NULL)

	--				Taxis
	CREATE TABLE NUNCA_TAXI.Taxis(
		Id_Taxi numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Id_Reloj numeric(18, 0) References NUNCA_TAXI.Relojes(Id_Reloj) NULL,
		Id_MarcaTaxi numeric(18, 0)References NUNCA_TAXI.MarcasTaxi(Id_MarcaTaxi) NOT NULL,
		Ta_Patente varchar(255)UNIQUE NOT NULL,
		Ta_Licencia varchar(255)UNIQUE NOT NULL,
		Ta_Rodado varchar(250) NOT NULL,
		Ta_Modelo varchar(255) NOT NULL,
		Ta_Habilitado bit NOT NULL CONSTRAINT [DF_Taxis_Ta_Habilitado]  DEFAULT ((1)))

	--				TiposViaje
	CREATE TABLE NUNCA_TAXI.TiposViaje
		(Id_TipoViaje numeric(18, 0) PRIMARY KEY IDENTITY(0,1) NOT NULL,
		 Ti_DescripcionTipoViaje varchar(255)UNIQUE NOT NULL)

	--				Viajes
	CREATE TABLE NUNCA_TAXI.Viajes(
		Id_Viaje numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Id_Cliente numeric(18, 0)References NUNCA_TAXI.Clientes(Id_Cliente) NULL,
		Id_Chofer numeric(18, 0)References NUNCA_TAXI.Choferes(Id_Chofer) NOT NULL,
		Id_Turno numeric(18, 0)References NUNCA_TAXI.Turnos(Id_Turno)NOT NULL,
		Id_Taxi numeric(18, 0)References NUNCA_TAXI.Taxis(Id_Taxi) NOT NULL,
		Id_TipoViaje numeric(18, 0)References NUNCA_TAXI.TiposViaje(Id_TipoViaje) NOT NULL,
		Vi_Cant_Fichas numeric(18, 0) NOT NULL,
		Vi_Fecha datetime NOT NULL,
		Vi_Importe numeric(18, 2) NOT NULL,
		Vi_FechaRendido datetime NULL,
		Vi_FFactura_Ini datetime NULL,
		Vi_FFactura_Fin datetime NULL)

	--				ChoferesTurnosTaxis
	CREATE TABLE NUNCA_TAXI.ChoferesTurnosTaxis(
		Id_Chofer numeric(18, 0)References NUNCA_TAXI.Choferes(Id_Chofer) NOT NULL,
		Id_Turno numeric(18, 0)References NUNCA_TAXI.Turnos(Id_Turno)NOT NULL,
		Id_Taxi numeric(18, 0)References NUNCA_TAXI.Taxis(Id_Taxi) NOT NULL,
		Fecha datetime CONSTRAINT [DF_ChoferesTurnosTaxis_Cat_Fecha]  DEFAULT ((getdate())) NOT NULL)


	--				Rendiciones
	CREATE TABLE NUNCA_TAXI.Rendiciones(
		Id_Rendicion numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Id_Chofer numeric(18, 0)References NUNCA_TAXI.Choferes(Id_Chofer) NOT NULL,
		Id_Turno numeric(18, 0)References NUNCA_TAXI.Turnos(Id_Turno)NOT NULL,
		Ren_Fecha datetime NOT NULL,
		Ren_Importe numeric(18, 2) NOT NULL)

	--				Usuarios
	CREATE TABLE NUNCA_TAXI.Usuarios(
		Id_Usuario numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Us_Usuario varchar(255)UNIQUE NOT NULL,
		Us_Password varchar(255) NOT NULL,
		Us_Habilitado bit NOT NULL CONSTRAINT [DF_Usuarios_Us_Habilitado]  DEFAULT ((1)),
		Us_Login_Failed numeric(18,0) CONSTRAINT [DF_Usuarios_Us_Login_Failed]  DEFAULT ((0)) NOT NULL)

	--				Roles
	CREATE TABLE NUNCA_TAXI.Roles(
		Id_Rol numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Ro_Descripcion varchar(255)UNIQUE NOT NULL,
		Ro_Habilitado bit NOT NULL CONSTRAINT [DF_Roles_Ro_Habilitado]  DEFAULT ((1)))

	--				UsuariosRoles
	CREATE TABLE NUNCA_TAXI.UsuariosRoles(
		Id_Usuario numeric(18, 0) References NUNCA_TAXI.Usuarios(Id_Usuario) NOT NULL ,
		Id_Rol numeric(18, 0) References NUNCA_TAXI.Roles(Id_Rol) NOT NULL)

	--				Permisos
	CREATE TABLE NUNCA_TAXI.Permisos(
		Id_Permiso numeric(18, 0) PRIMARY KEY IDENTITY(1,1) NOT NULL,
		Pe_Descripcion varchar(255)UNIQUE NOT NULL)

	--				PermisosRoles
	CREATE TABLE NUNCA_TAXI.PermisosRoles(
		Id_Rol numeric(18, 0) References NUNCA_TAXI.Roles(Id_Rol) NOT NULL,
		Id_Permiso numeric(18, 0) References NUNCA_TAXI.Permisos(Id_Permiso) NOT NULL)
END
GO
--------------------------------------------------
--				MIGRAR Y COMPLETAR TABLAS		--
--------------------------------------------------
CREATE PROCEDURE NUNCA_TAXI.CargarTablasNuncaTaxi
AS 
BEGIN
		--				MarcasReloj
	INSERT INTO GD1C2012.NUNCA_TAXI.MarcasReloj
			(Ma_NombreReloj)
	SELECT    DISTINCT Reloj_Marca
	FROM		gd_esquema.Maestra
		
	--				Relojes
	INSERT INTO GD1C2012.NUNCA_TAXI.Relojes
			(Id_MarcaReloj
			,Re_Modelo
			,Re_Fecha_Ver)
	SELECT     DISTINCT
				(SELECT     Id_MarcaReloj FROM         NUNCA_TAXI.MarcasReloj WHERE Ma_NombreReloj=gd_esquema.Maestra.Reloj_Marca)
			,Reloj_Modelo
			,Reloj_Fecha_Ver
	FROM         gd_esquema.Maestra

	--				Clientes
	INSERT INTO GD1C2012.NUNCA_TAXI.Clientes
			 (Cl_Nombre
			 ,Cl_Apellido
			 ,Cl_Dni
			 ,Cl_Telefono
			 ,Cl_Direccion
			 ,Cl_Mail
			 ,Cl_Fecha_Nac
			 ,Cl_Habilitado)
	SELECT DISTINCT Cliente_Nombre, Cliente_Apellido, Cliente_Dni, Cliente_Telefono, Cliente_Direccion, Cliente_Mail, Cliente_Fecha_Nac,1
	FROM		gd_esquema.Maestra
	WHERE     (Auto_Marca IS NOT NULL) AND (Cliente_Nombre IS NOT NULL)

	--				Turnos
	INSERT INTO GD1C2012.NUNCA_TAXI.Turnos
			 (Tu_Hora_Ini
			 ,Tu_Hora_Fin
			 ,Tu_Descripcion
			 ,Tu_Valor_Ficha
			 ,Tu_Valor_Bandera)
	SELECT       DISTINCT
				  Turno_Hora_Inicio, Turno_Hora_Fin, Turno_Descripcion, Turno_Valor_Ficha, Turno_Valor_Bandera
	FROM		gd_esquema.Maestra

	--				Choferes
	INSERT INTO GD1C2012.NUNCA_TAXI.Choferes
			 (Ch_Nombre
			 ,Ch_Apellido
			 ,Ch_Dni
			 ,Ch_Direccion
			 ,Ch_Telefono
			 ,Ch_Mail
			 ,Ch_Fecha_Nac)
	SELECT DISTINCT Chofer_Nombre, Chofer_Apellido, Chofer_Dni, Chofer_Direccion, Chofer_Telefono, Chofer_Mail, Chofer_Fecha_Nac
	FROM         gd_esquema.Maestra

	--				MarcasTaxi
	INSERT INTO GD1C2012.NUNCA_TAXI.MarcasTaxi
			 (Ma_NombreTaxi)
	SELECT    DISTINCT Auto_Marca
	FROM         gd_esquema.Maestra

	--				Taxis
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[Taxis]
			(Id_Reloj
			,Id_MarcaTaxi
			,Ta_Patente
			,Ta_Licencia
			,Ta_Rodado
			,Ta_Modelo)
	SELECT       DISTINCT
			(SELECT	  Id_Reloj FROM         NUNCA_TAXI.Relojes WHERE Re_Modelo=gd_esquema.Maestra.Reloj_Modelo)
			,(SELECT     id_MarcaTaxi FROM         NUNCA_TAXI.MarcasTaxi WHERE Ma_NombreTaxi=gd_esquema.Maestra.Auto_Marca)
			,Auto_Patente
			,Auto_Licencia
			,Auto_Rodado
			,Auto_Modelo
	FROM         gd_esquema.Maestra

	--				TiposViaje
	INSERT INTO GD1C2012.NUNCA_TAXI.TiposViaje
			   (Ti_DescripcionTipoViaje)
		 VALUES('Calle')
	INSERT INTO GD1C2012.NUNCA_TAXI.TiposViaje
			   (Ti_DescripcionTipoViaje)
		 VALUES('Cliente')

	--				Viajes
	INSERT INTO GD1C2012.NUNCA_TAXI.Viajes
			(Id_Cliente
			,Id_Chofer
			,Id_Turno
			,Id_Taxi
			,Vi_Cant_Fichas
			,Vi_Fecha
			,Id_TipoViaje
			,Vi_Importe
			,Vi_FechaRendido
			,Vi_FFactura_Ini
			,Vi_FFactura_Fin)
	SELECT 
			(SELECT id_cliente FROM NUNCA_TAXI.Clientes WHERE cl_Dni=gd_esquema.Maestra.cliente_dni)
			,(SELECT id_chofer FROM NUNCA_TAXI.Choferes WHERE Ch_DNI=gd_esquema.Maestra.Chofer_Dni)
			,(SELECT id_Turno FROM NUNCA_TAXI.Turnos WHERE Tu_Descripcion=gd_esquema.Maestra.Turno_Descripcion)
			,(SELECT     id_Taxi FROM         NUNCA_TAXI.Taxis Where Ta_Patente=gd_esquema.Maestra.Auto_Patente)
			, Viaje_Cant_Fichas
			, Viaje_Fecha
			,(CASE 
				WHEN gd_esquema.Maestra.cliente_dni IS NOT NULL THEN(SELECT Id_TipoViaje FROM NUNCA_TAXI.TiposViaje WHERE TI_descripcionTipoViaje='Cliente')
		  		WHEN gd_esquema.Maestra.cliente_dni IS NULL THEN(SELECT Id_TipoViaje FROM NUNCA_TAXI.TiposViaje WHERE TI_descripcionTipoViaje='Calle')
			END)
			,(SELECT ((gd_esquema.Maestra.Viaje_Cant_Fichas*Tu_Valor_ficha)+Tu_Valor_Bandera) FROM NUNCA_TAXI.Turnos WHERE Tu_Descripcion=gd_esquema.Maestra.Turno_Descripcion)
			,gd_esquema.Maestra.Rendicion_Fecha
			,gd_esquema.Maestra.Factura_Fecha_Inicio
			,gd_esquema.Maestra.Factura_Fecha_Fin
	FROM gd_esquema.Maestra

	--				ChoferesTurnosTaxis
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[ChoferesTurnosTaxis]
			(Id_Chofer
			,Id_Turno
			,Id_Taxi)
	SELECT DISTINCT 
			(SELECT     id_chofer FROM         NUNCA_TAXI.Choferes Where Ch_DNI=gd_esquema.Maestra.Chofer_Dni)
			,(SELECT     id_Turno FROM         NUNCA_TAXI.Turnos Where Tu_Descripcion=gd_esquema.Maestra.Turno_Descripcion)
			,(SELECT     id_Taxi FROM         NUNCA_TAXI.Taxis Where Ta_Patente=gd_esquema.Maestra.Auto_Patente)
	FROM         gd_esquema.Maestra

	--				Rendiciones
	INSERT INTO GD1C2012.NUNCA_TAXI.Rendiciones
			(Id_Chofer
			,Id_Turno
			,Ren_Fecha
			,Ren_Importe)
	SELECT     
			Id_Chofer
			, Id_Turno
			, Vi_FechaRendido
			, SUM(Vi_Importe) AS ImporteDeRendicion
	FROM         NUNCA_TAXI.Viajes
	WHERE     (Vi_FechaRendido IS NOT NULL)
	GROUP BY Id_Chofer, Id_Turno, Vi_FechaRendido

	--				Usuarios
	INSERT INTO GD1C2012.NUNCA_TAXI.Usuarios
			   (Us_Usuario
			   ,Us_Password)
			VALUES
			   ('admin','Utd0YrJJhxdcjX2rkBpZZ+kn/8jQtuSiNOB6SuxeNyQ=')

	--				Permisos
	INSERT INTO GD1C2012.NUNCA_TAXI.Permisos
			   (Pe_Descripcion)
		VALUES
			   ('ABM de Cliente')
		INSERT INTO GD1C2012.NUNCA_TAXI.Permisos
			   (Pe_Descripcion)
		VALUES
			   ('ABM de Rol')
		INSERT INTO GD1C2012.NUNCA_TAXI.Permisos
			   ([Pe_Descripcion])
		VALUES
			   ('ABM de Usuario')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('ABM de Auto')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('ABM de Reloj')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('ABM de Chofer')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('ABM de Turno')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('Asignacion Chofer-Auto')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('Registro de Viajes')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('Rendicion de Cuenta del Chofer')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('Facturacion del Cliente')
		INSERT INTO [GD1C2012].[NUNCA_TAXI].[Permisos]
			   ([Pe_Descripcion])
		VALUES
			   ('Listado Estadistico')

	--				Roles
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[Roles]
			   ([Ro_Descripcion])
		 VALUES
			   ('Administrador del Generaal')

	--				UsuariosRoles
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[UsuariosRoles]
			   ([Id_Usuario]
			   ,[Id_Rol])
		 VALUES
			   (1,1)

	--				PermisosRoles
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,1)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,2)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,3)
INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,4)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,5)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,6)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,7)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,8)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,9)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,10)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,11)
	INSERT INTO [GD1C2012].[NUNCA_TAXI].[PermisosRoles]
			   ([Id_Rol]
			   ,[Id_Permiso])
		 VALUES
			   (1           ,12)


END
GO


EXEC NUNCA_TAXI.CrearTablasNuncaTaxi
GO
EXEC NUNCA_TAXI.CargarTablasNuncaTaxi
GO


